//入口文件
import Vue from 'vue'
//导入 mint-ui 的header组件
// import {Header,Swipe, SwipeItem,Button, Lazyload } from 'mint-ui'
// //使用Vue.component注册组件
// Vue.component(Header.name,Header)
// Vue.component(Swipe.name, Swipe)
// Vue.component(SwipeItem.name, SwipeItem)
// Vue.component(Button.name, Button)
// Vue.use(Lazyload);
import MintUI from 'mint-ui'
Vue.use(MintUI)
import 'mint-ui/lib/style.css'
//导入App 组件
import app from './App.vue'
//导入mui样式文件
import './lib/mui/css/mui.min.css'
import './lib/mui/css/icons-extra.css'
//导入路由的包，安装路由 接收路由
import VueRouter from 'vue-router'
Vue.use(VueRouter)
import router from './router.js'
//导入 vue-resource 并且安装
import VueResource from 'vue-resource'
Vue.use(VueResource)
//导入格式化时间的插件
import moment from 'moment'
//导入缩略图插件
import VuePreview from 'vue-preview'
Vue.use(VuePreview)
//定义全局过滤器
Vue.filter('dateFormat',function(dataStr,pattern="YYYY-MM-DD HH:mm:ss"){
	return moment(dataStr).format(pattern)
})
// 导入vuex
import Vuex from 'vuex'
Vue.use(Vuex)
//每次刚进入网站，肯定会调用main.js 在刚调用的时候，先把本地存储的数据读出来放到store中去
var car = JSON.parse(localStorage.getItem('car')||'[]')
//创建vuex实例
var store = new Vuex.Store({
	state:{//this.$store.state.***
		car:car
		//{id:商品的id,count:要购买的数量,price:商品的单价,selected:false}
	},
	mutations:{//this.$store.commit('方法的名称',唯一的一个参数)
		addToCar(state,goodsinfo){
			//点击加入购物车，把商品信息保存到store中的state中car上
			//如果购物车中有之前加入的商品信息，那么只需要更新数量
			// 、、如果没有，则直接把商品数据push到car中
			// 假设在购物车中没有找到对应的商品
			var flag = false
			state.car.some(item=>{
				if (item.id==goodsinfo.id) {
					item.count += parseInt(goodsinfo.count)
					flag = true
					return true
				}
			})
			//如果最终循环完毕，的到的flag还是false那就把商品数据push到car中
			if (!flag) {
				state.car.push(goodsinfo)
			}
			// 当更新car之后吧car中的数组，存储到本地的localstorage中
			localStorage.setItem('car',JSON.stringify(state.car))
		},
		updateGoodsInfo(state,goodsinfo){
			//修改购物车中商品的数量值
			state.car.some(item=>{
				if (item.id==goodsinfo.id) {
					item.count = parseInt(goodsinfo.count)
					return true
				}
			})
			//每当修改完商品的数量，把最新的购物车数据，保存到本地储存中
			localStorage.setItem('car',JSON.stringify(state.car))
		},
		removeFormCar(state,id){
			//根据id，从state中的购物车中删除对应的那条商品数据
			state.car.some((item,i)=>{
				if(item.id==id){
					state.car.splice(i,1)
					return true
				}
			})
			//将删除后的购物车数据保存到本地储存中
			localStorage.setItem('car',JSON.stringify(state.car))
		},
		upateGoodsSelected(state,info){
			console.log(info.id)
			state.car.some(item=>{
				if (item.id==info.id) {
					item.selected = info.selected
				}
			})
			localStorage.setItem('car',JSON.stringify(state.car))
		}
	},
	getters:{//this.$store.getters.***
		//相当于计算属性，也相当于filters
		getAllCount(state){
			var c = 0
			state.car.forEach(item=>{
				c += item.count
			})
			return c
		},
		getGoodsCount(state){
			var o ={}
			state.car.forEach(item=>{
				o[item.id] = item.count
			})
			return o
		},
		getGoodsSelected(state){
			var s = {}
			state.car.forEach(item=>{
				s[item.id] = item.selected
			})
			return s
		},
		getGoodsCountAndAmount(state){
			var o ={
				count:0,
				amount:0
			}
			state.car.forEach(item=>{
				if (item.selected) {
					o.count += item.count
					o.amount = o.count * item.peice
				}
			})
			return o
		}
	}
})




//创建vue实例  把组件挂载上去
var vm = new Vue({
	el:'#app',
	router,
	render:c => c(app),
	store
})
